那些年用过的 JQuery 之经典 QQ 表情插件

由于目前在接触聊天室项目,接到一个需求实现一个类似QQ表情。在网上找了一款jquery经典表情插件。下面介绍一个用法:

HTML:

  首先在html页面的head中引入jQuery库文件和QQ表情插件jquery.qqFace.js文件

然后在body中加入以下html代码:
1   <div id="show">div>
2     <div class="comment">
3     <div class="com_form">
4         <textarea class="input" id="saytext" name="saytext">textarea>
5         <p><span class="emotion">表情span><input type="button" class="sub_btn" value="提交">p>
6     div>
7   div> 

CSS:

我们用CSS来美化页面,关键是表情按钮图片span.emotion的鼠标滑上与移开效果,以及调用表情插件后,显示的表情.qqFace面板效果,请看代码:

 1 .comment{width:680px; margin:20px auto; position:relative}
 2 .comment h3{height:28px; line-height:28px}
 3 .com_form{width:100%; position:relative}
 4 .input{width:99%; height:60px; border:1px solid #ccc}
 5 .com_form p{height:28px; line-height:28px; position:relative}
 6 span.emotion{width:42px; height:20px; background:url(icon.gif) no-repeat 2px 2px;
 7 padding-left:20px; cursor:pointer}
 8 span.emotion:hover{background-position:2px -28px}
 9 .qqFace{margin-top:4px;background:#fff;padding:2px;border:1px #dfe6f6 solid;} 10 .qqFace table td{padding:0px;} 11 .qqFace table td img{cursor:pointer;border:1px #fff solid;} 12 .qqFace table td img:hover{border:1px #0066cc solid;} 13 #show{width:680px; margin:20px auto} 

jquery:

当我们点击页面输入框下方那个笑脸时,触发调用qqface表情插件,简单几行就搞定。

1 $(function(){ 2 $('.emotion').qqFace({ 3
4 assign:'saytext', //给输入框赋值 5 path:'face/'    //表情图片存放的路径 6 }); 7 ... 8 }); 

当选择表情图片后,输入框中会插入一段如[em_5]之类的代码,代表插入的表情图片,实际应用中,点提交按钮后应该将这段表情代码连同其他内容插入到数据表中。而在页面显示的时候,我们应该将表情代码替换成真正的图片显示在页面上。下面的代码是插入表情图片后,点击提交按钮,使用javascript自定义函数将表情代码替换并显示:

 1 $(function(){
 2     ...
 3     $(".sub_btn").click(function(){
 4         var str = $("#saytext").val();
 5         $("#show").html(replace_em(str));
 6     });
 7 });
 8 function replace_em(str){_  _9     str = str.replace(/\g,'<;');< span=""> 10     str = str.replace(/\>/g,'>;'); 11     str = str.replace(/\n/g,'<;br/>;'); 12     str = str.replace(/[em_([0-9]*)]/g,'<img src="face/$1.gif" border="0" />'); 13 return str; 14 } 

下面着重介绍下在nodejs+express4中的应用:

步骤如下:

1:加入引用表情的span

1         <div class="send-out">
2             <span class="emotion" id="emotion"><img class="head_picture" src="/images/r-middle-pic07.png">表情span>
3             <input class="send-text" id="Y_iSend_Input" type="text" maxlength="100" value="">
4             <input id="Y_iSend_Bt" class="out_text" onclick="CHAT.submit();" type="button" value="发送"/>
5         div>

2:加入头文件并调用jquery

1 <script type="text/javascript" src="/js/jquery.qqFace.js">script>
2 $(function(){ 3 $('.emotion').qqFace({ 4 assign:'Y_iSend_Input', //给输入框赋值 5 path:'/face/'    //表情图片存放的路径 6 }); 7     });

3:用正则替换输入的[]表情

 w.CHAT={
replace_em: function (str) {
            str = str.replace(/\__g, '<;'); str="str.replace(/\>/g, '>;');
            str = str.replace(/\n/g, '<;br/>;');
            str = str.replace(/[em_([0-9]*)]/g, '<img src="/face/$1.gif" border="0" />');
            return str;
        },

        //提交聊天消息内容
        submit: function () {

            var str = $("#Y_iSend_Input").val();

            $("#Y_iSend_Input").val(CHAT.replace_em(str));

            var message_text = d.getElementById("Y_iSend_Input").value;
  }
}

4:显示

nodejs聊天室,浅析。